pub fn dp_rec_mc(amount: u32) -> u32 {
     // 定义可用的纸币面额
     let coins = [1, 2, 5, 10, 20, 30, 50, 100];
    
     // 创建一个 dp 数组，初始化为一个很大的数（这里用 amount + 1 作为无穷大）
     let mut dp = vec![amount + 1; (amount + 1) as usize];
     
     // 0 元需要 0 张纸币
     dp[0] = 0;
 
     // 遍历每个金额
     for i in 1..=amount {
         for &coin in &coins {
             if i >= coin {
                 dp[i as usize] = dp[i as usize].min(dp[(i - coin) as usize] + 1);
             }
         }
     }
 
     // 返回结果
     if dp[amount as usize] == amount + 1 {
         0 // 如果无法找零，返回 0
     } else {
         dp[amount as usize] // 返回所需的最小纸币数
     } // test
}
